package com.tcm.pay.domain.dto;

import java.io.Serializable;

/**
 * 扫码支付
 */
public class ScanPayDTO implements Serializable {

    /**
     * 商户号  必须
     */
    private String merNo;

    /**
     * 商户平台订单号  必须
     */
    private String billNo;

    /**
     * 扫码支付方式   必须
     * AliScanPay（支付宝支付），
     * WxScanPay(微信线下支付)，
     * WxAppPay（微信APP支付），
     * WxScanPay_OnLine(微信线上支付)，
     * WxJsapi_OnLine(微信线上公众号支付)
     * WxJsapi_OffLine(微信线下公众号支付)
     * AliJsapiPay_OnLine（支付宝线上服务窗支付）（暂未开放）
     * AliJsapiPay_OffLine（支付宝线下服务窗支付）
     * UnionScanPay_I（银联云闪付主扫）
     * TradeCodePay(行业码支付)
     */
    private String payType;

    /**
     * 支付金额 必须
     */
    private String amount;

    /**
     * 交易时间 发起支付的交易时间，格式yyyyMMddHHmmss  必须
     */
    private String orderTime;

    /**
     * 支付后跳转页面(成功跳转页面,失败跳转页面)   可选
     * 扫码支付方式是微信支付时，会根据用户支付结果进行跳转，最终结果以异步通知为准。只适合微信公众号支付和支付宝服务窗支付
     * {"sucPage":"http://baidu.com/success.html","failPage":"http://baidu.com/fail.html"}
     */
    private String returnUrl;

    /**
     * 异步通知地址   接收扫码支付结果的服务器地址  必须
     */
    private String adviceUrl;

    /**
     * 限制支付通道   可选
     * 支付宝（当有多个渠道时用“,”分隔）：moneyFund（余额宝），
     * pcredit（花呗），creditCard（信用卡），
     * credit_group（信用支付类型（包含信用卡卡通、信用卡快捷、花呗、花呗分期））
     * 微信：no_credit（限制用户不能使用信用卡）
     */
    private String limitPayChannel;

    /**
     * 渠道商户编码   必须
     * 渠道商户入驻返回的公司标示
     * companyNo；
     * 支付方式为UnionScanPay_I的传入银联入驻的商户号
     */
    private String scanpayMerchantCode;

    /**
     * 签名信息
     */
    private String signInfo;

    /**
     * 商品描述 可选
     */
    private String products;

    /**
     * 备注   可选
     */
    private String remark;

    /**
     * 是否需要验证用户信息   可空
     * T：需要  F：不需要
     */
    private String needCheckInfo;

    /**
     * 用户姓名 可空
     * NeedCheckInfo=T 时该参数才有效
     */
    private String payerName;

    /**
     * 用户手机号    可空
     * NeedCheckInfo=T 时该参数才有效
     */
    private String payerMobile;

    /**
     * 证件类型 可空
     * 身份证：IDENTITY_CARD、 护照：PASSPORT 、 军 官 证 ：OFFICER_CARD 、 士 兵 证 ：SOLDIER_CARD、户口本：HOKOU等。
     * 注：NeedCheckInfo=T 时 该参数才有效
     */
    private String certType;

    /**
     * 证件号  可空
     * 证件号 注：NeedCheckInfo=T 时该参数才有效
     */
    private String certNo;

    /**
     * 商户名称
     * 银联云闪付入驻的公司名称
     * 支付方式为UnionScanPay_I时不可空
     */
    private String merName;

    /**
     * 订单有效时间   可选
     * 该笔订单的有效期(分钟)
     */
    private String timeoutExpress;

    /**
     * 地区码
     */
    private String areainfo;

    /**
     * 终端号
     */
    private String terminalId;

    /**
     * 二级商户号    可选
     * 直清系统必传
     */
    private String subMerchantNo;

    /**
     * 业务类型     可选
     * 直清系统必传
     */
    private String busType;

    /**
     * 是否垫付手续费
     * 直清系统可选 默认为0(不垫付) 1(垫付)
     */
    private String behalfFee;

    /**
     * 直清下发异步通知地址
     * 直清系统可选
     */
    private String dsAdviceUrl;

    public String getPayType() {
        return payType;
    }

    public void setPayType(String payType) {
        this.payType = payType;
    }

    public String getProducts() {
        return products;
    }

    public void setProducts(String products) {
        this.products = products;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }


    public String getSubMerchantNo() {
        return subMerchantNo;
    }

    public void setSubMerchantNo(String subMerchantNo) {
        this.subMerchantNo = subMerchantNo;
    }

    public String getBusType() {
        return busType;
    }

    public void setBusType(String busType) {
        this.busType = busType;
    }

    public String getBehalfFee() {
        return behalfFee;
    }

    public void setBehalfFee(String behalfFee) {
        this.behalfFee = behalfFee;
    }

    public String getMerNo() {
        return merNo;
    }

    public void setMerNo(String merNo) {
        this.merNo = merNo;
    }

    public String getBillNo() {
        return billNo;
    }

    public void setBillNo(String billNo) {
        this.billNo = billNo;
    }

    public String getAmount() {
        return amount;
    }

    public void setAmount(String amount) {
        this.amount = amount;
    }

    public String getOrderTime() {
        return orderTime;
    }

    public void setOrderTime(String orderTime) {
        this.orderTime = orderTime;
    }

    public String getReturnUrl() {
        return returnUrl;
    }

    public void setReturnUrl(String returnUrl) {
        this.returnUrl = returnUrl;
    }

    public String getAdviceUrl() {
        return adviceUrl;
    }

    public void setAdviceUrl(String adviceUrl) {
        this.adviceUrl = adviceUrl;
    }

    public String getLimitPayChannel() {
        return limitPayChannel;
    }

    public void setLimitPayChannel(String limitPayChannel) {
        this.limitPayChannel = limitPayChannel;
    }

    public String getScanpayMerchantCode() {
        return scanpayMerchantCode;
    }

    public void setScanpayMerchantCode(String scanpayMerchantCode) {
        this.scanpayMerchantCode = scanpayMerchantCode;
    }

    public String getSignInfo() {
        return signInfo;
    }

    public void setSignInfo(String signInfo) {
        this.signInfo = signInfo;
    }

    public String getNeedCheckInfo() {
        return needCheckInfo;
    }

    public void setNeedCheckInfo(String needCheckInfo) {
        this.needCheckInfo = needCheckInfo;
    }

    public String getPayerName() {
        return payerName;
    }

    public void setPayerName(String payerName) {
        this.payerName = payerName;
    }

    public String getPayerMobile() {
        return payerMobile;
    }

    public void setPayerMobile(String payerMobile) {
        this.payerMobile = payerMobile;
    }

    public String getCertType() {
        return certType;
    }

    public void setCertType(String certType) {
        this.certType = certType;
    }

    public String getCertNo() {
        return certNo;
    }

    public void setCertNo(String certNo) {
        this.certNo = certNo;
    }

    public String getMerName() {
        return merName;
    }

    public void setMerName(String merName) {
        this.merName = merName;
    }

    public String getTimeoutExpress() {
        return timeoutExpress;
    }

    public void setTimeoutExpress(String timeoutExpress) {
        this.timeoutExpress = timeoutExpress;
    }

    public String getAreainfo() {
        return areainfo;
    }

    public void setAreainfo(String areainfo) {
        this.areainfo = areainfo;
    }

    public String getTerminalId() {
        return terminalId;
    }

    public void setTerminalId(String terminalId) {
        this.terminalId = terminalId;
    }

    public String getDsAdviceUrl() {
        return dsAdviceUrl;
    }

    public void setDsAdviceUrl(String dsAdviceUrl) {
        this.dsAdviceUrl = dsAdviceUrl;
    }
}
